// import com.alibaba.druid.sql.ast.SQLName;
// import com.alibaba.druid.sql.ast.SQLObject;
// import com.alibaba.druid.sql.ast.SQLPartition;
// import com.alibaba.druid.sql.ast.statement.SQLCreateIndexStatement;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSQLObject;
// import com.alibaba.druid.sql.dialect.oracle.ast.OracleSegmentAttributesImpl;
// import com.alibaba.druid.sql.dialect.oracle.visitor.OracleASTVisitor;
// import com.alibaba.druid.sql.visitor.SQLASTVisitor;

// import java.util.ArrayList;
// import java.util.List;
#pragma once
#include "../OracleSegmentAttributesImpl.h"
#include "../OracleSQLObject.h"

class OracleUsingIndexClause
    : virtual public OracleSegmentAttributesImpl,
      virtual public OracleSQLObject
{
public:
  SQLObject_ptr index;
  BOOL_ptr enable;

  BOOL_ptr computeStatistics;
  BOOL_ptr reverse;

  SQLPartition_list_ptr localPartitionIndex;

  OracleUsingIndexClause();
  SHAREDOBJECT(OracleUsingIndexClause);

  void accept0(SQLASTVisitor_ptr visitor);

  // @Override
  void accept0(OracleASTVisitor_ptr visitor);

  BOOL_ptr getEnable();

  void setEnable(BOOL_ptr enable);

  BOOL_ptr isComputeStatistics();

  void setComputeStatistics(BOOL_ptr computeStatistics);

  SQLObject_ptr getIndex();

  void setIndex(SQLName_ptr x);

  void setIndex(SQLCreateIndexStatement_ptr x);

  BOOL_ptr isReverse();

  void setReverse(BOOL_ptr reverse);

  SQLPartition_list_ptr getLocalPartitionIndex();

  void cloneTo(OracleUsingIndexClause_ptr x);

  SQLObject_ptr clone();
};
